Protocol translation with delay

ABSTRACT

This document relates to protocol translation for remote control of various devices. One example is a technique that includes identifying a controlled device that has a controlled device communication protocol for controlling the controlled device. The technique also includes obtaining translation data that conveys translations of commands from another protocol into the controlled device protocol. The technique also includes configuring a delay for transmitting the translated commands, and performing translation between the another protocol and the controlled device protocol using the translation data and the configured delay.

BACKGROUND

Different types of electronic devices can be controlled remotely byother devices, and sometimes different devices use different protocols.As a consequence, an electronic device may sometimes receive a commandin a protocol that the device cannot properly interpret. In some cases,receiving such a command can cause the electronic device to exhibitunexpected behavior.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

The description generally relates to protocol translation for remotecontrol of various devices. One example is a computing device that caninclude an infrared receiver, an infrared transmitter, a processing unitconfigured to execute an operating system, and a microcontroller. Themicrocontroller can be configured to receive a first command in a firstprotocol via the infrared receiver and provide the first command to theoperating system. The operating system can be configured to obtain thefirst command from the microcontroller, translate the command into atranslated second command in a second protocol, and provide thetranslated second command to the microcontroller. The microcontrollercan also be configured to delay for a specified period of time afterreceiving the translated second command from the operating system and,after expiration of the specified period of time, control the infraredtransmitter to transmit the translated second command.

Another example is a computing device that can include a receiver, atransmitter, processing resources, and memory or storage resources. Thememory or storage resources can store instructions which, when executedby the processing resources, cause the processing resources to receive,via the receiver, a first packet that identifies a command encoded in afirst protocol. The instructions, when executed by the processingresources, can also cause the processing resources to translate thefirst packet into a second packet identifying the command in a secondprotocol, initiate a timer, and, responsive to expiration of the timer,cause the transmitter to transmit the second packet.

Another example is a method that can include identifying a controlleddevice that has a controlled device communication protocol forcontrolling the controlled device. The method can also include obtainingtranslation data for the controlled device, and the translation data canconvey translations of commands from another protocol into thecontrolled device protocol. The method can also include configuring adelay for transmitting the translated commands and performingtranslation between the another protocol and the controlled deviceprotocol using the translation data and the configured delay.

BRIEF DESCRIPTION OF THE DRAWINGS

The Detailed Description is described with reference to the accompanyingfigures. In the figures, the left-most digit(s) of a reference numberidentifies the figure in which the reference number first appears. Theuse of similar reference numbers in different instances in thedescription and the figures may indicate similar or identical items.

FIGS. 1 and 6 illustrate exemplary systems, consistent with someimplementations of the present concepts.

FIGS. 2, 4, and 5 illustrate exemplary computing devices, consistentwith some implementations of the present concepts.

FIG. 3 illustrates exemplary communication protocols, consistent withsome implementations of the present concepts.

FIGS. 7 and 8 illustrate exemplary methods or techniques, consistentwith some implementations of the present concepts.

DETAILED DESCRIPTION Overview

Different types of devices can be controlled by remote controls thatimplement different protocols. For example, two different brands oftelevisions might use different infrared protocols for controlling thetelevisions. As a consequence, the remote control for one televisionmight not work for another television because commands that the remotecontrol transmits may not be compliant with the protocol for the othertelevision.

In addition, sometimes an intermediary computing device, such as agaming console, might be deployed to control another device, such as atelevision. To do so, the gaming console might have a correspondingremote control that directly controls the gaming console. Afterreceiving the commands from the remote control, the gaming console canthen retransmit the commands to the television.

In this scenario, the gaming console and the television might usedifferent remote control protocols. However, assuming both the gamingconsole and the television use similar portions of the electronicspectrum (e.g., both use infrared protocols or similar radiofrequencies), then both the gaming console and the television may detectsignals transmitted by the remote control that can only be properlytranslated by the console. Because these signals conform to the protocolfor the gaming console instead of the protocol for the television, thetelevision might interpret the signal as a malformed communication.This, in turn, can cause the television to cease detection functionalityfor some time before the television is ready to receive another signal.If the television remains in the inactive detection state when thegaming console retransmits a translated command to the television, thetelevision is unlikely to respond properly to the retransmitted command.

More generally, the disclosed implementations discuss variousintermediary devices, such as the aforementioned console, that performcommand translation. The command translation can be implemented forcommands received from a remote control and intended to control acontrolled device, such as the aforementioned television. Thistranslation functionality can allow a user to control the controlleddevice using a remote control that cannot directly communicate with thecontrolled device, e.g., because the controlled device does not nativelyunderstand the protocol used by the remote control.

The examples introduced in the following discussion convey certaininventive concepts using infrared signaling examples. These examples areprovided in the context of a gaming console that is used to control adisplay device, such as a television. However, the concepts discussedherein are also applicable in other contexts. For example, the disclosedimplementations can be employed for control protocols using other formsof light (e.g., laser, ultraviolet, etc.), radio, sound, or othersignaling mechanisms. In addition, the disclosed implementations can usedirected or omnidirectional signals in free space, as well as signalscarried via a physical conduit (e.g., fiber optic, power linecommunications, etc.). The disclosed implementations can be employedover a range of distances. For example, the disclosed implementationscan be used to control devices for near-field computing purposes (e.g.,devices within a few inches of one another), devices within the sameroom or building, and/or devices that are separated by many miles.

First Example System

FIG. 1 shows a system 100 with a remote control 102, a console 104(e.g., a gaming console such as an XBox®), and a display 106 (e.g., atelevision, computer monitor, etc.). In some implementations, the remotecontrol may be a remote control specifically for the console, and may beconfigured to transmit infrared signals in a first protocol that usesfirst commands understood by the console (e.g., NEC protocol or avariant thereof). The display 106 can be configured to process infraredsignals in a second protocol that is different than the first protocol(e.g., a proprietary protocol associated with a manufacturer of thedisplay, or any protocol other than the protocol understood by theconsole). The second protocol may use different commands than the firstprotocol. In addition, note that the remote control can, in some cases,be provided with the console by a manufacturer of the console, e.g., asa gaming controller or as a separate media remote used for controllingtelevision, movies, music, etc.

As a consequence of using different protocols, the display 106 may notbe able to directly process or respond to commands transmitted by theremote control 102. To allow the display to be controlled by the remotecontrol, the remote control can transmit an infrared signal 108conveying a first command to console 104 in the first infrared protocol(e.g., the “remote protocol”). In turn, the console can translate thecommand into a translated second command in the second infrared protocol(e.g., the “display protocol”) and transmit an infrared signal 110(1)conveying the translated second command. Infrared signal 110(1) canreflect as infrared signal 110(2) and, in turn, be received by thedisplay. Thus, the translation and retransmission by the console canallow the remote control to control the display by using the console asan intermediary. Note that infrared signals 110(1) and 110(2) may bereferred to herein more generally as infrared signal 110, as it shouldbe apparent from context whether the intent is to refer to infraredsignal 110(1), 110(2), or both.

Note that the respective protocols and commands discussed herein candiffer in various ways. For example, in some cases, the remote protocoland the display protocol can both define a similar set of logicalcommands, e.g., volume up, volume down, channel up/down,brightness/contrast up/down, etc. However, these commands can berepresented differently in the different protocols.

For example, the commands in one protocol may be conveyed using adifferent number of bits than in the other protocol. As another example,different protocols may use packets with different headers or other datafields, including fields that identify the command, the intendedrecipient of the command (e.g., an identifier of the console and/ordisplay), etc. In addition, one protocol may use different timingparameters for individual bits, e.g., some protocols may use the sameduration of time to represent a logical 1 and a logical 0, e.g., 2milliseconds for each. Other protocols may use a shorter period of timefor one logical value than for another, e.g., 1.125 milliseconds for alogical 0 and 2.25 milliseconds for a logical 1. Protocols can alsodiffer in specific light, radio, or sonic frequencies used, types ofmultiplexing (e.g., time vs. frequency division), use of guard channelsor uplink/downlink channels, etc.

As used herein, the term “translate” implies obtaining a logical commandin one protocol and conveying a similar logical concept in anotherprotocol. For example, a first volume up command in the remote protocolmight be translated into a second volume up command for the displayprotocol that has one or more different individual bits than the firstvolume up command, is of a different length than the first volume upcommand, is conveyed using a different frequency than the first volumeup command, using different timing than the first volume up command,etc. Note also that the protocols need not be completely different,e.g., the two protocols may share some characteristics. For example, oneprotocol might be a new or extended version of the other protocol thatmay be somewhat compatible with the previous version, but that alsodefines new messages and/or deprecates some commands from the previousversion.

Example Console

FIG. 2 shows console 104 in more detail. As shown, console 104 includesan infrared window 202, and behind the infrared window is an infraredreceiver 204 and an infrared transmitter 206. In some cases, theinfrared receiver and transmitter can be controlled by a singlemicrocontroller within the console, e.g., responsive to commandsprovided by a processing unit (e.g., a CPU) of the console. In otherimplementations, the infrared receiver and transmitter can be controlledby separate microcontrollers.

Generally, the infrared receiver 204 can decode the infrared signal 108transmitted by remote control 102 and provide the processing unit of theconsole 104 with a decoded infrared packet (e.g., a series of logicalbits) conveying a command for the display 106. The processing unit cantranslate the command into the second protocol to obtain a translatedsecond packet. The processing unit can then provide a translated packet(e.g., a series of logical bits) to the infrared transmitter 206 toretransmit as infrared signal 110, which in turn conveys the command tothe display.

Note that infrared window 202 can be a single window shared by both theinfrared receiver 204 and the infrared transmitter 206. The window caninclude an infrared bandpass filter that allows infrared light to passthrough while attenuating visible light. Moreover, the infrared windowcan be relatively small, e.g., a few square inches (e.g., 5) or less(e.g., approximately one square inch). In some cases, the infraredtransmitter will transmit at relatively high power, e.g., approximately½ watt. The remote control 102 may transmit at a relatively lower power,e.g., an order of magnitude (e.g., 10×) less than the infraredtransmitter on the console 104. Generally, this is possible because theremote control can have a line of sight to the console, whereas theinfrared transmitter on the console may not have a direct line of sightto the display 106. Instead, the infrared transmitter on the console cantransmit a relatively high-wattage signal 110(1) that can reflect offvarious surfaces (e.g., the floor, walls, etc.) and still carry enoughenergy to effectively communicate with the display 106.

In some implementations, the infrared transmitter 206 is pointed at adownward angle relative to a horizontal plane defined by the top surfaceor bottom surface of the console 104, e.g., 45 degrees or thereabouts.As a consequence, when the console is mounted in a relatively horizontalconfiguration, infrared signal 110(1) will tend to bounce off of thefloor and then back to the display 106.

In some cases, the display 106 can detect the infrared signal 108transmitted by the remote control 102. However, as noted, signal 108 maybe in a protocol understood by the console 104 instead of anotherprotocol natively understood by the display. As a consequence, thedisplay may not be able to directly interpret some or all commandsconveyed by the signal 108. Moreover, the display may temporarily ceasedetection functionality for a period of time while attempting to decodethe signal 108. In other words, the display may temporarily transitionto a non-detecting state for a short period of time that may extend pastthe time when the display stops detecting signal 108. For example, insome cases, the display may take about 250 milliseconds after detectingthat signal 108 has ceased before being ready to detect another infraredsignal.

If the console 104 retransmits signal 110 after signal 108 stopstransmitting but while the display 106 remains in the non-detectingstate, then the display may not detect or respond to the signal 110.This can be problematic and frustrating for a user, because the displaymay appear to be relative unresponsive. Generally, the disclosedimplementations may use various techniques to ensure that the displayhas returned to an active detection state when the signal 110 istransmitted by the console.

Example Protocols

FIG. 3 illustrates several exemplary infrared protocols discussed morebelow. Generally, protocols 302 and 304 can be implemented by remotecontrol 102 and protocol 306 can be implemented by console 104.

FIG. 3 shows a protocol 302 that can be used directly between thedisplay 106 and a remote control specifically configured for the display(not shown in FIG. 1). When the user presses and holds a key, e.g.,volume up, volume down, fast forward, rewind, channel up, channel down,etc., the first packet A1 identifies the specific key that has beendepressed. Thereafter, repeat commands can be transmitted at periodicintervals by the remote, shown in FIG. 3 as A1 rc 1, A1 rc 2, and so on.Each repeat command may use relatively less bandwidth than the initialcommand A1.

When an intermediary device such as console 104 is used to translatecommands between remote control 102 and display 106, protocol 302 mayprove unsatisfactory. Generally, this can occur when the repeat commandsare generated by the remote control in relatively quick succession,e.g., because the repeat commands may have are relatively few bits andthus take less time to transmit than longer commands that precede them.Quickly retransmitting small commands in this manner can causeinterference issues when using an intermediary device for protocoltranslation, e.g., the repeat commands generated by the remote controlmay place the display into a non-detecting state and the display maystill be non-responsive when the translated packets are transmitted bythe console. For example, if the console transmits a translated commandin the second protocol after receiving a repeat command in the firstprotocol, the display may still be in the non-detecting state when thetranslated command is sent by the console.

One way to mitigate this issue is to configure the remote control 102 toimplement remote protocol 304 instead of protocol 302. In thisconfiguration, the remote control does not transmit repeat commands whenthe user continues to depress a particular button. Instead, the remotecontrol retransmits the initial command multiple times in a row. Forexample, instead of transmitting {A1, A1 rc 1, A1 rc 2, A1 rc 3} insequence, the remote control can transmit {A1, A2, A3, A4} in sequenceas the user continues to depress the volume up button. In this example,A1, A2, A3, etc., each represent a full volume up command, whereas A1 rc1, A1 rc 2, etc., represent repeat commands that refer back to theinitial A1 in protocol 302.

Comparing protocol 302 to protocol 304, note the following. As discussedabove, both protocols can be used to transmit commands by a remotecontrol. In FIG. 3, transmission interval 308 represents the amount oftime to transmit a full command (e.g., a volume up command) and emptyspace interval 310 represents an empty space that follows transmissioninterval 308 where no transmitting occurs by the remote control 102.Collectively, transmission interval 308 and space interval 310constitute a full communication interval 312.

In protocol 304, space interval 310 is followed by an additional guardinterval 314, whereas protocol 302 omits the guard interval. Saiddifferently, the remote control 102 immediately transmits a repeatmessage A1 rc 1 after each regular transmission interval 312 in protocol302, but adds the guard interval in protocol 304. The addition of theguard interval by the remote control between each successive command A1,A2, etc., has the effect of spreading out each command in time. This canallow the display 106 additional time to complete processing of commandsin the first protocol that the display detects but cannot decipher. Insome cases, guard interval 314 can thus allow the display to exit thenon-detecting state, and begin listening again for the retransmitted,translated signals provided by the console 104.

However, even using guard interval 314 as discussed above, the console104 can rebroadcast signal 110 too soon after receiving signal 108 fromremote control 102. As a consequence, the display 106 may still be inthe non-detecting state when the console transmits signal 110. Thus, insome implementations, the console 104 may add a delay beforerebroadcasting signal 110. FIG. 3 shows a protocol 306 implemented bythe console that shows this delay 316. This delay may be implemented byusing a timer (e.g., a software timer or a hardware timer) afterreceiving each command from the remote control before retransmitting tothe display.

To summarize, protocol 302 and 304 represent different protocols thatcan be implemented by remote control 102, and protocol 306 represents aprotocol that can be implemented by the console 104. For convenience andclarity, the examples herein may use the term “remote control protocol”to refer to 304 and “controlled device protocol” to refer to protocol306. However, as used in the claims, these terms are not limited to thespecific protocol examples discussed herein.

Example Console Components

FIG. 4 shows a general view of components that can be provided inconsole 104. As shown in FIG. 4, console 104 can include IR receiver 204and IR transmitter 206, as already shown in FIG. 2. Also, console 104can include a processing unit 402, a memory 404, and a microcontroller406. Generally, the memory can include instructions that are executed bythe processing unit to perform various functionality discussed herein,such as logically decoding infrared packets received from the remotecontrol 102 in a first protocol and translating commands identified inthe packets into a second protocol. The microcontroller 406 can directlycontrol the IR receiver and IR transmitter responsive to communicationsreceived from the processing unit, e.g., over one or more internalbuses. The microcontroller can also implement delay interval 316 via atimer, and provide the translated packets to the IR transmitter afterthe timer expires. Generally, the IR receiver can convert receivedinfrared signal 108 into a series of logical bits in the first protocolfor processing by the processing unit. Similarly, the IR transmitter canconvert another series of logical bits provided by the processing unitinto transmitted infrared signal 110.

FIG. 5 shows a more specific configuration of console 104. In FIG. 5,console 104 is provided with memory 404 connected to a memory bus 502.Memory bus 502 can connect to chipset 504, which can include a graphicscontroller 506 (e.g., a graphics processing unit or GPU) and processingunit 402, introduced above in FIG. 4. For example, the graphicscontroller and processing unit can access the memory via the memory bus.

Chipset 504 can also communicate using a chipset bus 508 with chipset510, which can include microcontroller 406 (FIG. 4) and memory/storage512. For example, memory/storage 512 can include volatile and/ornon-volatile memory (e.g., RAM, flash, etc.) storing instructions suchas microcontroller firmware. These instructions can generally controlthe microcontroller's processing, as discussed more herein.

Chipset 510 can communicate with IR receiver 204 and IR transmitter 206using a transmitter/receiver bus 514. In addition, chipset 510 cancommunicate with various other I/O devices 516 using I/O bus 518. Forexample, I/O devices 516 can be controlled using a network controller, auniversal serial bus (USB) controller, a high definition multimediainterface (HDMI) controller, a peripheral component interconnect (PCI)controller, a media device controller (e.g., Blu-ray, DVD, CD, etc.).

Chipset 510 can also communicate over a storage bus 520 with storage522, such as a flash drive, a magnetic hard disc drive (HDD), etc. Forexample, the storage bus can be a parallel or serial ATA bus. Thestorage can include various modules and data that can be read over thestorage into memory 404 for processing by the processing unit 402 and/orgraphics controller 506.

In some implementations, storage 522 can include application code 524.In the case of a gaming console, the application code can include one ormore executables of games stored locally on storage. Note, however, thatsuch executables may often be obtained via a network and/or removablemedia (CD, DVD, Blu-ray, etc.). Application code 524 can also includevarious higher-level functionality such as television programmingfunctionality, user log-in and gamer profile maintenance, etc.

Storage 522 can also include operating system code 526. The operatingsystem code can perform various functionality such as providinglow-level device drivers for various connected devices, management ofthreads, memory, and storage, providing various application programminginterfaces (APIs) used by application code 524, etc. Operating systemcode 526 can include a translation module 528 that can translatecommands between different protocols, e.g., such as commands receivedvia IR receiver 204.

Storage 522 can also include a translation data store 530. For example,the translation data store can include a lookup table for convertingvarious commands received via IR receiver 204 into other commands thatare transmitted by IR transmitter 206.

Network Scenario

The disclosed implementations can be performed in various scenarios,including locally on a single computing device as well as in networkedor cloud scenarios. FIG. 6 shows an example environment 600 includingvarious computing devices including a console 610, a console 620, aprotocol translation server 630, a media service server 640, and agaming service server 650, connected by a network 660. Note that thenames of the computing devices 610-650 are for convenience and merelyrefer to logical roles performed by these computing systems in theexamples discussed herein.

Certain components of the computing systems 610-650 may be referred toherein by parenthetical reference numbers. For the purposes of thefollowing description, parenthetical reference (1) indicates anoccurrence of a given component on console 610, (2) indicates anoccurrence on console 620, (3) indicates an occurrence on protocoltranslation server 630, (4) indicates an occurrence on media serviceserver 640, and (5) indicates an occurrence on gaming service server650. Unless identifying a specific instance of a given component, thisdocument will refer generally to the components of the computing deviceswithout the parenthetical.

Generally, each of the computing devices 610-650 may have respectiveprocessing resources 612 and memory/storage resources 614, which arediscussed in more detail below. The various computing systems may alsohave various modules that function using the processing andmemory/storage resources to perform the techniques discussed herein, asalso discussed more below. In the case of consoles 610 and 620,processing resources can include processing unit 402, graphicscontroller 506, and microcontroller 406 (FIGS. 4 and 5). Likewise, thememory/storage resources for consoles 610 and 620 can include memory404, memory/storage 512, and storage 522.

As previously discussed, consoles 610 and 620 can have application code524 as well as operating system code 526. Operating system code 526 caninclude translation module 528. In some cases, the operating system codecan request translation data from the protocol translation server 630over network 660. Translation service module 632 on the translationservice server can send a requested translation data set to the console,and the translation data set can be stored in the translation data store530 on the console.

The consoles 610 and 620 can also access the media service server 640.For example, the media service server can include a media service module642 that can send media data to the requesting console. For example, themedia can include television programming, music, videos, etc. In somecases, the media can also include video game code that is executable onthe console.

The consoles 610 and 620 can also access the gaming service server 650.For example, the gaming service server can include a gaming servicemodule 652 that can maintain a user profile for the user of eachconsole. The gaming service module can also handle networked gamingscenarios, e.g., by communicating game state information (e.g.,controller inputs) between consoles 610 and 620 when the users of therespective consoles are playing an online game together. The gamingservice module can also maintain user achievements, preferences, andconfiguration information for each user and/or each console.

From the perspective of consoles 610 and/or 620, the protocoltranslation server 630, media service server 640, and/or gaming serviceserver 650 can be considered network resources. Note, however, that a“network resource” could also refer to other types of resourcesaccessible over a network. For example, a network resource could be apeer device such as another console or any other user device (e.g., atablet, mobile phone, personal computer, etc.), a network-accessiblestorage device, etc.

First Method Example

FIG. 7 illustrates processing that can be performed in someimplementations. For example, method 700 is discussed below in thecontext of being implemented by the console 104, but in other scenarioscan be performed by various other types of computing devices.

Block 702 can identify a device that will be controlled by translatedcommands, such as a display, an audio device, a projector, etc. In somecases, the intermediary device performing the translation (e.g., console104) can determine an identity (e.g., type of device, brand, model,etc.) of the controlled device by communicating directly with thecontrolled device. For example, in the examples above, the console maybe connected to a display by an HDMI cable, and can use the HDMIinterface to detect the type of display. As another example, the consolecan receive a direct user input, perhaps from the remote control 102,identifying the type of device that will be controlled. In still furthercases, the console can contact the gaming service server 650 to accessthe user's profile. The user's profile may identify the type ofcontrolled device that the user has at home.

Block 704 can obtain translation data for the controlled device. Forexample, the console 104 can contact the translation service server 630and receive translation data. In some cases, the console can send anidentifier of the controlled device to the translation service server,and receive a subset of translation data for the specific device thatwill be controlled. In other cases, the console can obtain a full dataset suitable for translating commands for a variety of differentdevices. The console can then select a specific subset of commandtranslations for the particular device that is being controlled.

Block 706 can configure a delay for communicating with the controlleddevice. For example, the delay can be a universal delay that canaccommodate various types of controlled devices. In other cases, thedelay may be configurable according to the characteristics of the devicethat is being controlled. In some cases, the delay is static, e.g.,determined before doing translation functionality and does not changewhen the device is being controlled. In other cases, the delay can beadaptively configured depending on various other criteria, as will bediscussed more below.

Block 708 can perform protocol translation using the translation dataand the configured delay, as discussed elsewhere herein.

Second Method Example

FIG. 8 illustrates processing that can be performed in someimplementations. For example, method 800 can be implemented by theconsole 104 or another computing device. From one perspective, method800 can be viewed as part of method 700, in particular, block 708 ofmethod 700.

Block 802 of method 800 can receive a first signal in a first protocol.As discussed above, the first signal can be in an infrared protocol suchthe NEC protocol (“protocol 302” in FIG. 3), a modified variant thereof(e.g., “protocol 304” in FIG. 3), or another type of signal such as aradio signal, visible light, ultraviolet, sound, etc. The first signalcan include a first packet that identifies a command. For example, asdiscussed herein, the command can be a command requesting that thedisplay or another device change volume, brightness, contrast, achannel, a menu option, etc.

Block 804 of method 800 can decode the first signal to obtain the firstpacket and extract the command conveyed by the first signal. Forexample, as discussed elsewhere herein, the console 104 can perform thedecoding using IR receiver 204 and microcontroller 406.

Block 806 of method 800 can translate the command into a secondprotocol, e.g., a protocol understood by the display 106. Block 806 can,in some cases, include the command in a second packet that conforms tothe second protocol. The translation can be performed using translationdata, as discussed elsewhere herein. For example, as discussed elsewhereherein, the console 104 can translate the command and generate thesecond packet using operating system code 526 executing on processingunit 402.

Block 808 can delay for a specified period of time, e.g., by initiatinga timer and waiting for the timer to expire. The delay can be configuredusing various techniques, as discussed elsewhere herein. As noted above,the delay can be implemented by microcontroller 406, e.g., as controlledby firmware stored on memory/storage 512.

Block 810 can transmit a second signal that includes the second packetresponsive to expiration of the timer. For example, the second signalcan be transmitted by the microcontroller 406 controlling the IRtransmitter 206 to output a set of logical bits provided in the packetreceived from the operating system.

Inter-Console Communications

As noted above, some implementations may use multiple processingresources within console 104. FIG. 5 sets forth an example processingunit 402 and microcontroller 406. In some implementations, processingunit 402 can be configured via operating system code 526 and applicationcode 524. Microcontroller 406 can be a dedicated circuit that beconfigured via firmware.

Some implementations may perform certain functionality on the processingunit 402, e.g., using operating system code 526, and other functionalityon the microcontroller 406, e.g., by executing the firmware. Forexample, the operating system code can identify the controlled device asdiscussed elsewhere herein, e.g., via a user input, user profile, HDMIinterface, etc. The operating system code can also obtain, store, andmanage translation data for the controlled device.

Upon receiving a new command from the remote control 102, themicrocontroller 406 can determine how to process the new command. Somecommands, such as commands intended for the console 104 and notnecessarily to control the display 106, may be handled by themicrocontroller. For example, if the command is an on command, offcommand, eject command, and/or standby command, the microcontroller mayparse the incoming command and handle these commands directly on themicrocontroller. The microcontroller may assert one or more localsignals that instruct the console to turn on, off, eject a disc, and/orenter a standby mode.

Other received commands may be intended to control the display 106, suchas volume up or down, channel up or down, etc. However, as noted, thedisplay may not natively understand commands communicated by the remotecontrol 102. These commands may be identified by the microcontroller 406as being commands that are handled by the operating system code 526. Theoperating system code and microcontroller firmware may communicate by amessaging system over chipset bus 508, and the microcontroller can sendmessages identifying these commands to the operating system using themessaging system.

Upon receipt of a command needing translation, the operating system code526 can translate the command as discussed elsewhere herein, e.g., usingtranslation data stored locally or obtained over a network. Theoperating system can send another message back to the microcontroller406 with the translated command. Upon receipt of the translated command,the microcontroller can then delay for a specified period of time beforetransmitting the translated command to the display using IR transmitter206.

Delay Considerations

Referring back to FIG. 3, recall that delay 316 can be implemented bythe console 104. This delay can allow the display 106 to perform thefollowing: (1) detect a first packet transmitted by the remote control102 in a first protocol, (2) detect that the first packet is not in thesecond protocol used by the display, (3) transition to a non-detectingstate for a period of time, and (4) recover to a detecting state beforereceiving a second, translated packet from the console that is in thesecond protocol. In some cases, delay 316 can be deterministic ornon-deterministic, as discussed more below.

During delay 316, the console 104 may perform some operating systemprocessing, such as packet translation, and the microcontroller 406 mayperform some additional processing, e.g., initiating a countdown counterthat is set to a specified period of time and then transmittingtranslated packets upon expiration of the timer. There are variousconsiderations that can be useful for configuring the duration of thedelay by the microcontroller after receiving the translated command fromthe operating system. These considerations can include the amount oftime the operating system takes to perform translation processing, theamount of time it takes the display 106 to recover to a non-detectingstate, and the amount of time it takes before the remote control 102transmits a subsequent command if the user holds a given command input,e.g., the time between A1, A2, and A3 shown in protocol 304.

Consider first the amount of time it takes the display 106 to recover toa detecting state after detecting a command transmitted by the remotecontrol 102. In some cases, the console 104 and the remote control maybe compatible with one another, e.g., made by the same manufacturer orotherwise intended to be used with one another. The console manufacturermay wish to allow the user of the console to control various differentdisplays from other manufacturers with the remote control for theconsole, e.g., to allow the user to control both the console and thedisplay with a single remote control. Different display manufacturersmay implement different protocols, and these displays may take differentamounts of time to recover after receiving a malformed packet.

Assume, for the purposes of the following examples, that a television Amade by manufacturer A takes 300 milliseconds to recover after detectinga malformed packet. In other words, as long as delay 316 is at least 300milliseconds, the console 104 can safely retransmit a translated packetand expect television A to properly handle the packet. Further, assumetelevision B made by manufacturer B takes 450 milliseconds to recoverafter detecting a malformed packet. In other words, delay 316 needs tobe at least 450 milliseconds in order for the console to safelyretransmit a translated packet and expect television B to properlyhandle the packet.

One way to handle this scenario is for the console 104 to use a singledelay 316 irrespective of the television involved. In the example above,since television B takes the longest to recover, the console 104 can usea 450 millisecond delay for both television A and television B. Thiswill work for television A because television A recovers in less timethan television B.

Note that delay 316 has multiple components, e.g., the operating systemprocessing time and the microcontroller processing time. Eithercomponent can be non-deterministic, but particularly the duration of theoperating system translation processing time. For example, some commandsmay take more time to translate than other commands. In addition, theoperating system processing time may be impacted by resource utilizationissues, e.g., the processing unit 402 may have one or more cores thatare busy at some times and not as busy at other times. For the followingexamples, assume that the longest the operating system processing timecan take is 300 milliseconds, and the shortest the operating system timecan take is 200 milliseconds. Further, assume the microcontroller time,with the exception of intentional delay added by the microcontroller, isnegligible and assumed to be essentially instantaneous for the followingexamples. In practice, the microcontroller may take 1-5 milliseconds toperform its processing.

In this example, one way to ensure that delay 316 is at least 450milliseconds would be to configure a microcontroller delay of 250milliseconds. Since the operating system takes at least 200 millisecondsto perform its translation processing, this means that, at a minimum,the total delay will be at least 450 milliseconds, which can accommodateboth television A and television B.

Consider now the timing of the remote control. Referring back toprotocols 302 and 304, recall that, in both protocols, the remotecontrol waits for empty space interval 310 after transmitting a commandand before transmitting a subsequent command. In protocol 304, a guardinterval 314 is added by the remote control 102 to allow the televisiontime to recover before transmitting the next command.

If the guard interval 314 is too short, the remote control 102 mightretransmit the next command while the console 104 is also transmitting atranslated command. Thus, the guard interval may be configured so thatthis does not occur. For example, assume transmission interval 308 is200 milliseconds, and space interval 310 is 50 milliseconds. In otherwords, the standard remote control protocol takes 250 millisecondsbetween each command. But, continuing with the example, the console 104will take at least 450 milliseconds to retransmit a command andpotentially as long as 550 milliseconds. In this case, a guard intervalof 300 milliseconds can be used by the remote control to allow theconsole to complete translation processing before the remote controltransmits another command.

In further implementations, the delay interval 316 can be adjusted toaccommodate different operating system processing times. For example,the operating system may maintain a model of translation processingtimes to resource utilization. The model may take into account coreutilization as well as memory and/or storage utilization, or otherresources that may impact the translation processing times. As a simpleexample, assume that the translation time takes 200 milliseconds whencore utilization is under 50%, 250 milliseconds when core utilization isbetween 51-75%, and 300 milliseconds when core utilization exceeds 75%.Given the 450 millisecond constraint for television B mentioned above,this could imply the microcontroller delay would be 250 millisecondswhen the core utilization is under 50%, 200 milliseconds when coreutilization is between 51-75%, and 150 milliseconds when coreutilization exceeds 75%.

These adjustable delays can be implemented in various ways. Onemechanism is for the operating system to calculate the microcontrollerdelay for each translation, and convey that information to themicrocontroller over chipset bus 508. Another mechanism could be for theprocessor to output the core utilization over the chipset bus, and themicrocontroller firmware could map core utilization to delayspecifications. In this example, a firmware update could be used tochange the delay settings for different core utilizations.

In still further implementations, the console 104 can implementdifferent delays for different devices. For example, if the operatingsystem code 526 detects that the console is controlling television Ainstead of television B, the console may use different delays. In theexample above, television A takes 300 milliseconds to recover after amalformed packet, and the minimum operating system delay is 200milliseconds. Thus, the microcontroller can use a delay of 100milliseconds for each command to ensure that the television recoversbefore the console retransmits a translated packet. If adjustable delaysare provided based on core utilization as discussed above, themicrocontroller delay timer could be set to 100 milliseconds when thecore utilization is under 50%, 50 milliseconds when the core utilizationis between 51 and 75%, and 0 milliseconds when the core utilizationexceeds 75%.

Device Implementations

Referring back to FIG. 1, system 100 as shown includes several devices.In this case, for purposes of explanation, the devices are introduced asa remote control 102, console 104, and display 106. However, these aremere examples and the disclosed implementations can be performed byvarious types of computing devices. For example, any of the remotecontrol, console, and/or display can be implemented instead using adesktop computer or a mobile computing device such as a smartphone,tablet, or laptop device, a peripheral device such as a printer,scanner, or access point, a computing-enabled home appliance, a wearableand/or augmented reality device, etc. Generally, so long as a device hassome computational hardware and capability for communication using aprotocol, the device can be employed consistently with the disclosedimplementations.

For example, some implementations may use a remote control tocommunicate with a console to control an audio receiver or whiteboardinstead of a display. In other implementations, the remote control couldbe replaced by a mobile computing device or a wearable device tocommunicate with the console to control the display, receiver, and/orwhiteboard. As another example, the console could instead be astationary or mobile computing device that acts as an intermediary in amanner similar to the console discussed above. Note also that these aremere examples and many other combinations of device types arecontemplated.

The term “device,” “computer,” or “computing device” as used herein canmean any type of device that has some amount of hardware processingcapability and/or hardware storage/memory capability. Processingcapability can be provided by one or more hardware processors (e.g.,hardware processing units/cores) that can execute computer-readableinstructions to provide functionality. Computer-readable instructionsand/or data can be stored on storage, such as storage/memory.

Storage and/or memory can be internal or external to a computing device.The storage can include any one or more of volatile or non-volatilememory, hard drives, flash storage devices, and/or optical storagedevices (e.g., CDs, DVDs, etc.), among others. As used herein, the term“computer-readable media” can include signals. In contrast, the term“computer-readable storage media” excludes signals. Computer-readablestorage media includes “computer-readable storage devices.” Examples ofcomputer-readable storage devices include volatile storage media, suchas RAM, and non-volatile storage media, such as hard drives, opticaldiscs, and flash memory, among others.

In some cases, computing devices are configured with a general purposeprocessor and a separate microcontroller. In other cases, a device caninclude a system on a chip (SOC) type design. In SOC designimplementations, functionality provided by the device can be integratedon a single SOC or multiple coupled SOCs. One or more associatedprocessors can be configured to coordinate with shared resources, suchas memory, storage, etc., and/or one or more dedicated resources, suchas hardware blocks configured to perform certain specific functionality.Thus, the term “processor” as used herein can also refer to centralprocessing units (CPUs), graphical processing units (GPUs), controllers,microcontrollers, processor cores, or other types of processing devicessuitable for implementation both in conventional computing architecturesas well as SOC designs.

Alternatively, or in addition, the functionality described herein can beperformed, at least in part, by one or more hardware logic components.For example, and without limitation, illustrative types of hardwarelogic components that can be used include Field-programmable Gate Arrays(FPGAs), Application-specific Integrated Circuits (ASICs),Application-specific Standard Products (ASSPs), System-on-a-chip systems(SOCs), Complex Programmable Logic Devices (CPLDs), etc.

Also note that the devices described herein can function in astand-alone or cooperative manner to implement the described techniques.For example, the methods described herein can be performed on a singlecomputing device and/or distributed across multiple computing devicesthat communicate over network(s) 660. Without limitation, network(s) 660can include one or more local area networks (LANs), wide area networks(WANs), the Internet, a peer-to-peer connection or overlay, and thelike. Also, note that network(s) 660 can be wired or wireless or anycombination thereof.

Any of the devices described herein can have various mechanisms forinput and/or output. For example, such devices can have keypad inputmechanisms (e.g., a keyboard), joy sticks, mouse devices, touchscreeninput mechanisms, voice recognition functionality, movement sensingdevices (such as accelerometers, gyroscopes, etc.), body pose trackingmechanisms (such as the Kinect™ device produced by Microsoft®Corporation of Redmond, Wash.), electrodermal input mechanisms,physiological input mechanisms, and so on. The outputs can be proved toone or more output devices, including displays, speakers, printers,haptic output devices, hologram-generating devices, etc.

Also, as noted above, some implementations may employ signalingtechnologies other than infrared light. In cases where radio frequenciesare used, IR receiver 204 and IR transmitter 206 can instead be providedas a radio transmitter and receiver, respectively. Likewise, in caseswhere sound is employed, acoustic transmitters and receivers can beprovided. In a similar manner, appropriate transmission and receptionhardware can be provided for optical technologies such as visible light,ultraviolet, laser, etc.

Additional Examples

Various device examples are described above. Additional examples aredescribed below. One example includes a computing device comprising aninfrared receiver, an infrared transmitter, a processing unit configuredto execute an operating system, and a microcontroller. Themicrocontroller is configured to receive a first command in a firstprotocol via the infrared receiver and provide the first command to theoperating system. The operating system is configured to obtain the firstcommand from the microcontroller, translate the first command into atranslated second command in a second protocol, and provide thetranslated second command to the microcontroller. The microcontroller isfurther configured to delay for a specified period of time afterreceiving the translated second command from the operating system, andafter expiration of the specified period of time, control the infraredtransmitter to transmit the translated second command.

Another example can include any of the above and/or below examples wherethe operating system is further configured to determine an identity of acontrolled device to be controlled by the translated second command, andto determine the second protocol based at least on the identity of thecontrolled device.

Another example can include any of the above and/or below examples wherethe operating system is further configured to access a network resourceto obtain translation data for translating from the first protocol tothe second protocol, store the translation data locally on the computingdevice, and use the translation data to translate the first command intothe translated second command.

Another example can include any of the above and/or below examples wherethe computing device further comprises a single infrared window sharedby the infrared receiver and the infrared transmitter.

Another example can include any of the above and/or below examples wherethe single infrared window comprises less than 5 square inches.

Another example can include any of the above and/or below examples wherethe single infrared window comprises one square inch or less.

Another example can include any of the above and/or below examples wherethe single infrared window includes an infrared bandpass filter.

Another example can include any of the above and/or below examples wherethe first command is conveyed by a first infrared signal generated by aremote control, the second translated command is conveyed by a secondinfrared signal generated by the computing device, and the secondinfrared signal generated by the computing device is at least 10 timesstronger than the first infrared signal generated by the remote control.

Another example can include any of the above and/or below examples wherethe second infrared signal is at least 0.5 watts.

Another example can include any of the above and/or below examples wherethe second infrared signal is approximately 0.5 watts.

Another example can include a computing device comprising a receiver, atransmitter, processing resources, and memory or storage resources. Thememory or storage resources store instructions which, when executed bythe processing resources, cause the processing resources to receive, viathe receiver, a first packet encoded in a first protocol. The firstpacket identifies a command, translates the first packet into a secondpacket identifying the command in a second protocol, initiates a timer,and responsive to expiration of the timer, causes the transmitter totransmit the second packet.

Another example can include any of the above and/or below examples wherethe computing device is embodied as a gaming console.

Another example can include any of the above and/or below examples wherethe instructions, when executed by the processing resources, cause theprocessing resources to determine an identity of a controlled device andselect the second protocol based at least on the identity of thecontrolled device, where the first protocol is not natively understoodby the controlled device.

Another example can include any of the above and/or below examples wherethe controlled device is a display and the second packet encodes aninstruction to the display to change at least one of a volume of thedisplay, a brightness, color, or contrast of the display, a channelshown on the display, or rewind or fast forward media content beingshown on the display.

Another example can include any of the above and/or below examples wherethe transmitter is an infrared transmitter pointed at a downward anglerelative to a horizontal plane defined by at least one surface of thecomputing device.

Another example can include any of the above and/or below examples wherethe transmitter is a radio or infrared transmitter and the receiver is aradio or infrared receiver.

Another example can include a method comprising identifying a controlleddevice. The controlled device has a controlled device protocol forcontrolling the controlled device. The method further comprisesobtaining translation data for the controlled device. The translationdata conveys translations of commands from another protocol into thecontrolled device protocol. The method further comprises configuring adelay for transmitting the translated commands and performingtranslation between the another protocol and the controlled deviceprotocol using the translation data and the configured delay.

Another example can include any of the above and/or below examples whereconfiguring the delay is based at least on a period of time during whichthe controlled device ceases detection of commands.

Another example can include any of the above and/or below examples wherethe period of time occurs after the controlled device receives anindividual command in the another protocol.

Another example can include any of the above and/or below examples wherethe method further comprises configuring the delay based at least on aduration of translation processing from the another protocol to thecontrolled device protocol.

CONCLUSION

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims, and other features and actsthat would be recognized by one skilled in the art are intended to bewithin the scope of the claims.

The invention claimed is:
 1. A computing device comprising: an infraredreceiver; an infrared transmitter; a processing unit configured toexecute an operating system; and a microcontroller configured to:receive a first command in a first protocol via the infrared receiver;and provide the first command to the operating system, the operatingsystem being configured to: obtain the first command from themicrocontroller; translate the first command into a translated secondcommand in a second protocol; and provide the translated second commandto the microcontroller, the microcontroller being further configured to:delay for a specified delay period after receiving the translated secondcommand from the operating system; and after expiration of the specifieddelay period, control the infrared transmitter to transmit thetranslated second command to a controlled device, the specified delayperiod being based at least on a non-detection period during which thecontrolled device ceases detection of commands, and the specified delayperiod occurring after the controlled device receives the first commandin the first protocol.
 2. The computing device of claim 1, wherein theoperating system is further configured to: determine an identity of thecontrolled device to be controlled by the translated second command; anddetermine the second protocol based at least on the identity of thecontrolled device.
 3. The computing device of claim 2, wherein theoperating system is further configured to: access a network resource toobtain translation data for translating from the first protocol to thesecond protocol; store the translation data locally on the computingdevice; and use the translation data to translate the first command intothe translated second command.
 4. The computing device of claim 1,further comprising a single infrared window shared by the infraredreceiver and the infrared transmitter.
 5. The computing device of claim4, wherein the single infrared window comprises less than 5 squareinches.
 6. The computing device of claim 4, wherein the single infraredwindow comprises one square inch or less.
 7. The computing device ofclaim 4, wherein the single infrared window includes an infraredbandpass filter.
 8. The computing device of claim 7, wherein the firstcommand is conveyed by a first infrared signal generated by a remotecontrol, the second translated command is conveyed by a second infraredsignal generated by the computing device, and the second infrared signalgenerated by the computing device is at least 10 times stronger than thefirst infrared signal generated by the remote control.
 9. The computingdevice of claim 8, wherein the second infrared signal is at least 0.5watts.
 10. The computing device of claim 8, wherein the second infraredsignal is approximately 0.5 watts.
 11. The computing device of claim 1,the non-detection period occurring when the controlled device interpretsthe first command as a malformed communication.
 12. A computing devicecomprising: a receiver; a transmitter; processing resources; and memoryor storage resources storing instructions which, when executed by theprocessing resources, cause the processing resources to: receive, viathe receiver, a first packet encoded in a first protocol, the firstpacket identifying a command; translate the first packet into a secondpacket identifying the command in a second protocol, the second protocolbeing used by a controlled device; initiate a timer to a value that isbased at least on a period of time during which the controlled deviceceases detection of commands, the period of time occurring after thecontrolled device receives the first packet encoded in the firstprotocol; and responsive to expiration of the timer, cause thetransmitter to transmit the second packet.
 13. The computing device ofclaim 12, embodied as a gaming console.
 14. The computing device ofclaim 12, wherein the instructions, when executed by the processingresources, cause the processing resources to: determine an identity ofthe controlled device; and select the second protocol based at least onthe identity of the controlled device, wherein the first protocol is notnatively understood by the controlled device.
 15. The computing deviceof claim 14, wherein the controlled device is a display and the secondpacket encodes an instruction to the display to change at least one of avolume of the display, a brightness, color, or contrast of the display,a channel shown on the display, or rewind or fast forward media contentbeing shown on the display.
 16. The computing device of claim 12,wherein the transmitter is an infrared transmitter pointed at a downwardangle relative to a horizontal plane defined by at least one surface ofthe computing device.
 17. The computing device of claim 12, wherein thetransmitter is a radio or infrared transmitter and the receiver is aradio or infrared receiver.
 18. A method comprising: identifying acontrolled device, the controlled device having a controlled deviceprotocol for controlling the controlled device; receiving a command inanother protocol; translating the received command into the controlleddevice protocol using translation data to obtain a translated command,the translation data conveying translations of various commands fromanother protocol into the controlled device protocol; and delaying for aconfigured delay time before transmitting the translated command, theconfigured delay time being based at least on a period of time duringwhich the controlled device ceases detection of commands, the period oftime occurring after the controlled device receives the command in theanother protocol.
 19. The method of claim 18, further comprising:determining the configured delay time based at least on a duration oftranslation processing from the another protocol to the controlleddevice protocol.
 20. The method of claim 19, further comprising:determining resource utilization of one or more hardware resources usedto perform the translating; and determining the duration of thetranslation processing based at least on the resource utilization of theone or more hardware resources.
 21. The method of claim 18, furthercomprising: setting the configured delay time to at least 250milliseconds.